package com.uco.oop;

// final关键字可以修饰类、方法、变量
// final修饰类，表示该类不能被继承
// final修饰方法，表示该方法不能被重写
// final修饰变量，表示该变量不能被修改（一般用做常量的定义，常量大写+下划线）

// 常量在编译阶段就会进行宏替换，性能和使用字面量是一样的
public class Final {
    // 必须定义的时候进行赋值
    final public static String CLASS_NAME = "Final";
    public static void main(String[] args) {
        final int a = 10;
//        基本类型的值不能改变
//        a= 20;
        System.out.println(a);
        System.out.println(Final.CLASS_NAME);

        final int[] aa = new int[]{1, 2, 3};
        // 引用类型的值可以改变，但是地址不能发生改变（重新 new）
//        aa = new int[]{4, 5, 6};
        aa[0] = 4;
        for (int i : aa) {
            System.out.println(i);
        }
    }

}
